package com.mmy.dao.permission;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import com.mmy.domain.permissionmenu.TSysUserRole;

public interface TSysUserRoleRepository extends JpaRepository<TSysUserRole, Integer> {
	/**
	 * 获得最大用户角色对照编号
	 * 
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 *       用处：1、在选择审核通过时需要给员工分派角色 SysUserController中updateReview()函数
	 */
	@Query(value = "SELECT MAX(iID) FROM tSysUserRole", nativeQuery = true)
	Object getMaxID();

	/**
	 * 创建用户角色对照编号
	 * 
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 *       用处：1、在选择审核通过时需要给员工分派角色 SysUserController中updateReview()函数
	 * 
	 * 
	 *       后台创建员工用到2021.03.17
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tSysUserRole(iID, iUserID, iRoleID, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (?1, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(int iD);

	/**
	 * 进入修改员工页面 通过员工ID查询角色
	 * 
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	@Query(value = "select *  from tSysUserRole where iUserID = ?1", nativeQuery = true)
	List<TSysUserRole> findByUserID(int iUserID);

	/**
	 * 修改员工提交时 修改员工对应的角色 需要先删除原有的角色
	 * 
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tSysUserRole where iUserID =?1", nativeQuery = true)
	void deleteByUserID(int userID);

	/**
	 * 查询该员工是否有总经理角色
	 * 
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	@Query(value = "select *  from tSysUserRole where iUserID = ?1 and iRoleID=?2 ", nativeQuery = true)
	TSysUserRole findByRoleName(int iUserID, int iRoleID);

}
